1. Field
The described embodiments generally relate to techniques for providing computer security.
2. Related Art
Easy access to computers and plentiful network bandwidth have made it very easy to share information and applications. For instance, a user can easily install and execute an application which is downloaded from a web site or received from a friend as an email attachment. However, installing and executing such applications on a computing device involves a level of trust. For example, because such applications are generally executed with inadequate security mechanisms, a user must implicitly trust that the application does not include any malicious code. Some applications exploit this blind trust, however, by including “viruses” that can damage or erase information on the computing device, and can propagate themselves to other vulnerable devices on the network.
Some techniques have been developed to mitigate the negative impacts of viruses. For instance, some interpreted languages reduce the risk involved in executing unknown code by limiting the ability of a programmer to specify unsafe operations. Moreover, some virtual machine execution environments isolate untrusted applications to their own virtual machines to reduce security risks. Although the above-described approaches can effectively provide a level of security, they suffer from a significant performance disadvantage in comparison to executing native code directly on the native architecture of a processor.